package com.creditease.tmsp.modules.sys.web;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.creditease.tmsp.common.config.Global;
import com.creditease.tmsp.common.persistence.IdGenerator;
import com.creditease.tmsp.common.web.BaseController;
import com.creditease.tmsp.modules.sys.entity.ProductInfo;
import com.creditease.tmsp.modules.sys.service.ProductInfoService;
import com.github.miemiedev.mybatis.paginator.domain.PageList;

/**
 * @Description: 商品管理controller
 * @Author: Wangty
 * @Company: 宜信-撮合项目组 
 * @Version: V1.0
 * @Create Date: 2014年8月20日
 * <pre>Modify</pre>
 * @Description:
 * @Author:
 * @Version: 
 * @Modify Date:
 */

@Controller
@RequestMapping(value = "${adminPath}/sys/productInfo")
public class ProductInfoController extends BaseController {

    @Autowired
	private ProductInfoService productInfoService;
	
	@ModelAttribute
	public ProductInfo get(@RequestParam(required = false) String id) {
		if (StringUtils.isNotBlank(id)) {
			return productInfoService.getById(id);
		} else {
			return new ProductInfo();
		}
	}
	
	/**
	 * @Description: 商品管理列表方法
	 * @param:
	 * @return: String
	 * @throws:
	 * @Author: Wangty
	 * @Create: Date: 2014年8月20日 下午3:03:38
	 */
	
	@RequestMapping(value = {"list", ""})
	public String list(ProductInfo productInfo, HttpServletRequest request,
	           HttpServletResponse response, Model model){
		
		Map<String, Object> map = new HashMap<String, Object>();
		map.putAll(convertBeanToMap(productInfo));
		List<ProductInfo> productInfoList = productInfoService.query(requestPageBounds(request), map);
		model.addAttribute("productInfoList", (PageList<ProductInfo>)productInfoList);
		
		return "modules/sys/productInfoList";
		
	}
	
	
	/**
	 * @Description: 跳转表单页面方法
	 * @param:
	 * @return: String
	 * @throws:
	 * @Author: Wangty
	 * @Create: Date: 2014年8月20日 下午3:04:37
	 */
	
	@RequestMapping(value = "form")
	public String form(ProductInfo productInfo, Model model) {
		
		model.addAttribute("productInfo", productInfo);
		return "modules/sys/productInfoForm";
	}
	
	

	/**
	 * @Description: 商品增加/修改方法
	 * @param:
	 * @return: String
	 * @throws:
	 * @Author: Wangty
	 * @Create: Date: 2014年8月20日 下午3:04:59
	 */
	
	@RequestMapping(value = "save")
	public String save(ProductInfo productInfo, HttpServletRequest request,
			Model model, RedirectAttributes redirectAttributes) {
		
		if (!beanValidator(model, productInfo)) {
			return form(productInfo, model);
		}
		if (StringUtils.isNotBlank(productInfo.getId())) {
			productInfoService.update(productInfo); 
		}else{
			productInfo.setId(IdGenerator.getId());           //规则UUID
			productInfo.setDelFlag("0");                      //删除标记（0：默认未删除）
			productInfo.setCreatorId(getPrincipal().getId()); //创建人为当前用户Id
			productInfo.setCreateTime(new Date());            //创建时间
			
			productInfoService.save(productInfo);
		}
		
		addMessage(redirectAttributes, "保存商品：'" + productInfo.getName() + "'成功");
		return "redirect:" + Global.getAdminPath() + "/sys/productInfo";
		
	}
	
	
	/**
	 * @Description: 商品删除方法（逻辑删除）
	 * @param:
	 * @return: String
	 * @throws:
	 * @Author: Wangty
	 * @Create: Date: 2014年8月20日 下午3:06:26
	 */
	
	@RequestMapping(value = "delete")
	public String delete(String id, RedirectAttributes redirectAttributes) {
		productInfoService.delete(id);
		addMessage(redirectAttributes, "删除成功");
		return "redirect:"+Global.getAdminPath()+"/sys/productInfo";
	}
	
}
